package net.hn.hnms.sys.orgnization.api.dispatcher;

/**
 *
 * 监察用户： 全国 -》 省 -》 分局 -》 煤矿
 * 监管用户： 全国 -》 省 -》 市 -》 县 -》 煤矿
 *
 * @author adam
 * @date 2021-02-26
 */
public interface DispatcherHandler<T> {

    /**
     * 查询全国数据
     * @param orgId 国家编码
     * @return 自定义数据
     */
    default T country(String orgId) {
        return null;
    }

    /**
     * 查询查询监察全国数据, 监察各省数据
     * @param orgId 国家编码
     * @return 自定义数据
     */
    default T country4Supervisor(String orgId) {
        return country(orgId);
    }

    /**
     * 查询集团全国数据
     * @param orgId
     * @return
     */
    default T countryGroup(String orgId){
        return country(orgId);
    }


    /**
     * 查询查询监管全国数据, 监管各省数据
     * @param orgId 国家编码
     * @return 自定义数据
     */
    default T country4Regulation(String orgId) {
        return country(orgId);
    }


    /**
     * 查询省的数据，2位， 如果 province4Supervisor方法和 province4City 方法逻辑一样，则仅需实现此 province方法
     * @param orgId
     * @return
     */
    default T province(String orgId) {return null;}

    /**
     * 查询省数据, 省下面的分局数据
     * @param orgId 省编码
     * @return 自定义数据
     */
    default T province4Supervisor(String orgId) {
        return province(orgId);
    }

    /**
     * 查询省下面的市数据，2位
     * @param orgId
     * @return
     */
    default T province4City(String orgId) {
        return province(orgId);
    }

    /**
     * 查询分局数据
     * @param orgId 分局编码
     * @return 自定义数据
     */
    default T supervisorBranch(String orgId) {
        return null;
    }

    /**
     * 查询城市数据
     * @param orgId 城市、盟 编码, 4位
     * @return 自定义数据
     */
    default T city(String orgId) {
        return null;
    }

    /**
     * 查询区县数据, 6位
     * @param orgId 区、县、旗 编码
     * @return 自定义数据
     */
    default T county(String orgId) {
        return null;
    }

    /**
     * 查询煤矿数据
     * @param orgId 煤矿编码
     * @return 自定义数据
     */
    default T coalmine(String orgId) {
        return null;
    }

    /**
     * 查询煤矿数据(监察)
     * @param orgId 煤矿编码
     * @return 自定义数据
     */
    default T coalmineSupervisor(String orgId){
        return  coalmine(orgId);
    }

    /**
     * 查询煤矿数据（监管）
     * @param orgId 煤矿编码
     * @return 自定义数据
     */
    default T coalmineRegulation(String orgId){
        return  coalmine(orgId);
    }

    /**
     * 查询集团数据(集团)
     * @param orgId
     * @return
     */
    default T group(String orgId){return  null;}

    /**
     * 查询煤矿数据（集团）
     * @param orgId
     * @return
     */
    default T coalmineGroup(String orgId){return coalmine(orgId);}

}
